package com.net.oil.car.contract;

import com.net.oil.base.IBaseModel;
import com.net.oil.car.bean.CarBean;

import java.util.List;

/**
 * 作者：lch
 * 时间：2018/4/10 0010:下午 15:39
 * 邮箱：245850413@qq.com
 * 说明：
 */

public interface MyCarDetailContract {
    interface Model extends IBaseModel{

        /**
         * 添加爱车
         * @param carTypeId     车型id
         * @param carNum 车牌号
         */
        void addCar(int carTypeId, String carNum);

        /**
         * 获取爱车列表
         */
        void getMyCarList();

        /**
         * 把爱车设为默认
         * @param id    爱车id
         */
        void setDefaultCar(int id);

        /**
         * 删除爱车
         * @param id    爱车id
         */
        void deleteCar(int id);

        /**
         * 编辑我的车辆信息
         * @param id    我的爱车id
         * @param registNumber  车牌号
         * @param modelId       车型id
         * @param buyTime       购车时间
         * @param mileage       行驶公里数
         * @param identificationCode    车架号
         * @param oilName       上次使用的机油名称
         * @param gearboxOilName    上次使用的变速箱油
         * @param nextKeepCarDate   下次保养时间
         */
        void updateCarInfo(int id, String registNumber, int modelId, String buyTime, int mileage, String identificationCode,
                           String oilName, String gearboxOilName, String nextKeepCarDate);

    }

    interface View {

        /**
         * 添加爱车成功
         */
        void addCarSuccess();

        /**
         * 添加爱车失败
         */
        void addCarFailed();

        /**
         * 获取我的爱车列表成功
         * @param carBeans  爱车列表
         */
        void getMyCarListSuccess(List<CarBean> carBeans);

        /**
         * 获取爱车列表失败
         */
        void getMyCarListFailed();

        /**
         * 设置默认爱车成功
         */
        void setDefaultCarSuccess();

        /**
         * 设置默认爱车失败
         */
        void setDefaultCarFailed();

        /**
         * 删除爱车成功
         */
        void deleteCarSuccess();

        /**
         * 删除爱车失败
         */
        void deleteCarFailed();

        /**
         * 编辑我的车辆信息成功
         */
        void updateCarInfoSuccess();

        /**
         * 编辑我的车辆信息失败
         */
        void updateCarInfoFailed();
    }

    interface Presenter {
        /**
         * 添加爱车
         * @param carTypeId     车型id
         * @param carNum 车牌号
         */
        void addCar(int carTypeId, String carNum);

        /**
         * 添加爱车成功
         */
        void addCarSuccess();

        /**
         * 添加爱车失败
         */
        void addCarFailed();

        /**
         * 获取爱车列表
         */
        void getMyCarList();

        /**
         * 获取我的爱车列表成功
         * @param carBeans  爱车列表
         */
        void getMyCarListSuccess(List<CarBean> carBeans);

        /**
         * 获取爱车列表失败
         */
        void getMyCarListFailed();

        /**
         * 设置默认爱车成功
         */
        void setDefaultCarSuccess();

        /**
         * 设置默认爱车失败
         */
        void setDefaultCarFailed();

        /**
         * 把爱车设为默认
         * @param id    爱车id
         */
        void setDefaultCar(int id);

        /**
         * 删除爱车成功
         */
        void deleteCarSuccess();

        /**
         * 删除爱车失败
         */
        void deleteCarFailed();

        /**
         * 删除爱车
         * @param id    爱车id
         */
        void deleteCar(int id);

        /**
         * 编辑我的车辆信息
         * @param id    我的爱车id
         * @param registNumber  车牌号
         * @param modelId       车型id
         * @param buyTime       购车时间
         * @param mileage       行驶公里数
         * @param identificationCode    车架号
         * @param oilName       上次使用的机油名称
         * @param gearboxOilName    上次使用的变速箱油
         * @param nextKeepCarDate   下次保养时间
         */
        void updateCarInfo(int id, String registNumber, int modelId, String buyTime, int mileage, String identificationCode,
                           String oilName, String gearboxOilName, String nextKeepCarDate);

        /**
         * 编辑我的车辆信息成功
         */
        void updateCarInfoSuccess();

        /**
         * 编辑我的车辆信息失败
         */
        void updateCarInfoFailed();
    }
}
